Λεξικά

Στην python, λεξικό (dict) δεν είναι αυτό που νομίζετε. Όσοι ξέρετε από προγραμματισμό θα τα γνωρίζετε ίσως ως maps, associative arrays ή hashes.

Σε κάθε περίπτωση, λεξικό είναι ένας τύπος αντικειμένων σαν τη λίστα, μόνο που αντί για απλά στοιχεία, έχει ένα σύνολο από μοναδικά κλειδιά, και σε καθένα τους αντιστοιχίζεται μια (όχι απαραίτητα μοναδική) τιμή.

Σύνταξη

Ένα λεξικό ξεκινάει και τελειώνει με άγκιστρα. Τα ζεύγη κλειδιού-τιμής χωρίζονται με κόμματα, ενώ το κλειδί χωρίζεται από την τιμή με άνω κάτω τελεία:

an_empty_dict = {}

a_dict = { 1 : "Monday", 2 : "Tuesday", 3 : "Wednesday", 4 : "Thursday", 5 : "Friday", 6 : "Saturday", 7 : "Sunday" }

another_dict = { "one" : 1337, "two" : "lol" }

Βασικές λειτουργίες

Οι πιο βασικές λειτουργίες ενός dict είναι η εισαγωγή ζεύγους και η ανάκτηση μιας τιμής. Αυτά γίνονται ως εξής:

>>> a_dict = {}
>>> a_dict['new key'] = 'new value'
>>> a_dict
{'new key': 'new value'}
>>> a_dict['new key']
'new_value'

Υποστηρίζεται επίσης διαγραφή στοιχείου:

del a_dict['new key']

Μπορούμε επίσης να ελέγξουμε εάν ένα κλειδί υπάρχει στο λεξικό, με το x in dict, όπως με τις λίστες.

Άσκηση 5: λεξικά στο μπουντρούμι

Σε αυτή την άσκηση θα ξαναγράψετε τον κώδικα που γράψατε στην προηγούμενη, χρησιμοποιώντας τα νέα καλούδια που μάθατε. Εμφανίστε το ίδιο μενού, και διαβάστε την επιλογή του χρήστη όπως και πριν:

You are at a corridor. Suddenly, the door behind you explodes, and the fire is coming toward you.
On the far end of the corridor in front of you is another door with a lock. You:
1. Run to the door and try to open it.
2. Run to the door and try to break it down.
3. Panic.

Ωστόσο αυτή τη φορά, μη χρησιμοποιήσετε if για να ελέγξετε τι πρέπει να τυπώσετε ως απάντηση στην επιλογή του χρήστη. Αντί για αυτό, αποθηκεύστε τις πιθανές επιλογές μαζί με τις επιθυμητές απαντήσεις σε ένα λεξικό, και χρησιμοποιήστε τις λειτουργίες του λεξικού για να εκτυπώσετε το σωστό μήνυμα. Θεωρήστε ότι η πόρτα είναι ανοιχτή, και επομένως στην περίπτωση που ο χρήστης δεν είναι ηλίθιος και επιλέξει 1, σώζεται αυτόματα.

Προαιρετική συνέχεια: Εάν έχετε χρόνο και όρεξη, θεωρήστε πως αυτή η τελευταία υπόθεση δεν ισχύει: η πόρτα είναι κλειδωμένη, και ο χρήστης πρέπει να έχει κλειδί για να την ανοίξει. Θεωρήστε ότι υπάρχει μια λίστα items που περιέχει τα αντικείμενα που κρατάει ο χρήστης. Τώρα, αλλάξτε την περίπτωση 1, ώστε το μήνυμα που εκτυπώνεται να πληροφορεί απλά το χρήστη ότι έφτασε στην πόρτα, και ελέγξτε εάν ο χρήστης έχει το κλειδί, πριν εκτυπώσετε ότι σώθηκε. Εάν δεν το έχει, πληροφορήστε τον πάλι για τον θάνατό του (στοιχείο: το κλειδί θα είναι απλά ένα αλφαριθμητικό στη λίστα items).

Έαν θέλετε να δοκιμάσετε το πρόγραμμά σας, ορίστε μόνοι σας έναν πίνακα items και τρέξτε το.